package cn.tedu._04mybatis.mapper;

import cn.tedu._04mybatis.pojo.entity.Weibo;
import cn.tedu._04mybatis.pojo.vo.ResultMapVO2;
import cn.tedu._04mybatis.pojo.vo.ResultMapVo1;
import cn.tedu._04mybatis.pojo.vo.WeiboVO1;
import cn.tedu._04mybatis.pojo.vo.WeiboVo2;
import org.apache.ibatis.annotations.*;

import java.util.ArrayList;
import java.util.List;

@Mapper
public interface WeiboMapper {
//    1.在微博表中插入一条数据
    //@Insert("INSERT INTO weibo(content,created,user_id) VALUES(#{content},#{created},#{userId})")
    int insertWeibo(Weibo weibo);


//    2.根据微博ID删除指定的微博
    //@Delete("DELETE FROM weibo WHERE id = #{Id}")
    int deleteWeibo(Long Id);

//    3.对微博的数据进行更新操作
    //@Update("UPDATE weibo SET content=#{content},created=#{created},user_id=#{userId} WHERE id=#{id}" )
    int updateWeiboById(Weibo weibo);

//    4.对微博的数据进行全字段查询
   // @Select("SELECT id,content,created,user_id FROM weibo WHERE id=#{wid}")
    Weibo selectWeiboById(Long wid);

//    5.单条数据部分字段查询
    //@Select("SELECT content,created FROM weibo WHERE id=#{wid}")
    WeiboVO1 selectWeioVobyId(Long wid);


//    6.查询指定用户发布的微博ID和内容
//    vo类的名和表中字段名不一样的话需要重新命名
    //@Select("SELECT id AS wid,content FROM weibo WHERE user_id=#{userId}")
    List<WeiboVo2> selectWeibo2ByUserId(Long userId);

//    7.动态删除: 根据微博ID,删除指定的微博数据
    int deleteWeiboByIds1(Integer[] ids);

//    8.动态删除:集合方式
    int deleteWeiboByIds2(List<Integer> ids);

    /*
    * 9.动态修改
    *   根据微博的Id修改微博的相关信息
    * */
    int dynamicUpdateWeiboById(Weibo weibo);

//    10.统计微博表中记录的数量
    int selectCount();

//    11.根据微博的Id查询该微博的Id,内容content,用户的Id
    ResultMapVo1 selectMap1(Long wid);

//    12查询指定用户发的所有微博信息
    ResultMapVO2 selectMap2(Long uid);
}
